﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

namespace Presentation.Pages
{
    public partial class AniversariantesAdmin : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                if (!Util.usuarioEhAdmin(this.Context))
                    Response.Redirect("~/Pages/index.aspx");
                else
                    carregarAniversariantes();
            }
        }

        private void carregarAniversariantes()
        {
            try
            {
                using (ministerioprosperid1Entities banco = new ministerioprosperid1Entities())
                {
                    int mes = (String.IsNullOrEmpty(txtFiltroMes.Text) ? 0 : Convert.ToInt32(txtFiltroMes.Text));

                    List<DEMembro> membros = banco.DEMembroes.Where(q => mes == 0 || q.Nascimento.Month == mes).OrderBy(q => q.Nome).ToList();

                    if (!String.IsNullOrEmpty(ddlIgreja.SelectedValue))
                        membros = membros.Where(q => q.STMatriz == Convert.ToBoolean(ddlIgreja.SelectedValue)).ToList();

                    grvAniversariante.DataSource = membros;
                    grvAniversariante.DataBind();
                }
            }
            catch (Exception)
            {
                Util.showMessage(this, "Erro ao carregar aniversariante");
            }
        }

        protected void btnExcluir_Click(object sender, EventArgs e)
        {
            try
            {
                if (!Util.usuarioEhAdmin(this.Context))
                    Response.Redirect("~/Pages/index.aspx");
                else
                {
                    Button btnExcluir = sender as Button;
                    Int32 id = Convert.ToInt32(btnExcluir.CommandArgument);

                    using (ministerioprosperid1Entities banco = new ministerioprosperid1Entities())
                    {
                        DEMembro membro = banco.DEMembroes.Single(q => q.Codigo.Equals(id));

                        banco.DEMembroes.DeleteObject(membro);
                        banco.SaveChanges();
                    }

                    carregarAniversariantes();

                    Util.showMessage(this, "Excluído com sucesso");
                }
            }
            catch (Exception)
            {
                Util.showMessage(this, "Erro ao excluir aniversariante");
            }
        }

        protected void btnSalvar_Click(object sender, EventArgs e)
        {
            try
            {
                if (Util.usuarioEhAdmin(this.Context))
                {
                    DEMembro membro = new DEMembro();
                    membro.Nome = txtNome.Text;
                    membro.Nascimento = Convert.ToDateTime(txtDiaMes.Text + "/2012");
                    membro.STMatriz = chkMatriz.Checked;

                    using (ministerioprosperid1Entities banco = new ministerioprosperid1Entities())
                    {
                        banco.AddToDEMembroes(membro);
                        banco.SaveChanges();
                    }

                    txtNome.Text = String.Empty;
                    txtDiaMes.Text = String.Empty;
                    chkMatriz.Checked = true;

                    carregarAniversariantes();

                    Util.showMessage(this, "Aniversariante cadastrado com sucesso");
                }
                else
                    Response.Redirect("~/Pages/index.aspx");
            }
            catch (Exception)
            {
                Util.showMessage(this, "Houve um erro ao cadastrar um novo aniversariante");
            }
        }

        protected void btnBuscar_Click(object sender, EventArgs e)
        {
            carregarAniversariantes();
        }

        protected void ddlIgreja_SelectedIndexChanged(object sender, EventArgs e)
        {
            carregarAniversariantes();
        }
    }
}